package com.liuxinlong.jobs;

import lombok.extern.slf4j.Slf4j;
import org.springframework.context.annotation.Configuration;

/**
 * 定时任务配置信息
 *
 * @author liuxinlong@hotwater.com.cn
 * @version 1.0.0
 * @since 2022年9月5日
 */
@Configuration
@Slf4j
public class QuartzConfiguration {
    /**
     *  配置任务
     * @param quartzTask QuartzTask为需要执行的任务
     * @return
     */
//    @Bean(name = "reptilianJob")
//    public MethodInvokingJobDetailFactoryBean detailFactoryBean(QuartzTask quartzTask) {
//        MethodInvokingJobDetailFactoryBean jobDetail = new MethodInvokingJobDetailFactoryBean();
//        // 是否并发执行
//        jobDetail.setConcurrent(false);
//        // 设置任务的名字
//        jobDetail.setName("reptilianJob");
//        // 设置任务的分组，在多任务的时候使用
//        jobDetail.setGroup("reptilianJobGroup");
//        // 需要执行的对象
//        jobDetail.setTargetObject(quartzTask);
//        /*
//         * TODO  非常重要
//         * 执行QuartzTask类中的需要执行方法
//         */
//        jobDetail.setTargetMethod("reptilian");
//        return jobDetail;
//    }

    /**
     * 定时触发器
     * @param reptilianJob 任务
     * @return
     */
//    @Bean(name = "jobTrigger")
//    public CronTriggerFactoryBean cronJobTrigger(JobDetail reptilianJob){
//        CronTriggerFactoryBean tigger = new CronTriggerFactoryBean();
//        tigger.setJobDetail(reptilianJob);
//        //cron表达式，每1分钟执行一次
////        tigger.setCronExpression("0 0/1 * * * ?");
//        //cron表达式，每5秒钟执行一次
//        tigger.setCronExpression("*/5 * * * * ?");
//        tigger.setName("reptilianTrigger");
//        return tigger;
//    }

//    /**
//     *  配置任务
//     * @param quartzTask QuartzTask为需要执行的任务
//     * @return
//     */
//    @Bean(name = "checkUserStatusJob")
//    public MethodInvokingJobDetailFactoryBean checkUserStatusJob(CheckUserStatusTask quartzTask) {
//        MethodInvokingJobDetailFactoryBean jobDetail = new MethodInvokingJobDetailFactoryBean();
//        // 是否并发执行
//        jobDetail.setConcurrent(false);
//        // 设置任务的名字
//        jobDetail.setName("checkUserStatusJob");
//        // 设置任务的分组，在多任务的时候使用
//        jobDetail.setGroup("reptilianJobGroup");
//        // 需要执行的对象
//        jobDetail.setTargetObject(quartzTask);
//        /*
//         * TODO  非常重要
//         * 执行QuartzTask类中的需要执行方法
//         */
//        jobDetail.setTargetMethod("reptilian");
//        return jobDetail;
//    }
//
//    /**
//     * 定时触发器
//     * @param checkUserStatusJob 任务
//     * @return
//     */
//    @Bean(name = "checkUserStatusJobTrigger")
//    public CronTriggerFactoryBean cronCheckUserStatusJobTrigger(JobDetail checkUserStatusJob){
//        CronTriggerFactoryBean tigger = new CronTriggerFactoryBean();
//        tigger.setJobDetail(checkUserStatusJob);
//        //cron表达式，每10分钟执行一次
//        tigger.setCronExpression("0 0/10 * * * ?");
//        //cron表达式，每5秒钟执行一次
////        tigger.setCronExpression("0 0/1 * * * ?");
//        tigger.setName("checkUserStatusJobTrigger");
//        return tigger;
//    }
//
//    /**
//     *  配置任务
//     * @param quartzTask QuartzTask为需要执行的任务 CheckInventoryTask
//     * @return
//     */
//    @Bean(name = "checkInventoryJob")
//    public MethodInvokingJobDetailFactoryBean checkInventoryJob(CheckInventoryTask quartzTask) {
//        MethodInvokingJobDetailFactoryBean jobDetail = new MethodInvokingJobDetailFactoryBean();
//        // 是否并发执行
//        jobDetail.setConcurrent(false);
//        // 设置任务的名字
//        jobDetail.setName("checkInventoryJob");
//        // 设置任务的分组，在多任务的时候使用
//        jobDetail.setGroup("group2");
//        // 需要执行的对象
//        jobDetail.setTargetObject(quartzTask);
//        /*
//         * TODO  非常重要
//         * 执行QuartzTask类中的需要执行方法
//         */
//        jobDetail.setTargetMethod("reptilian");
//        return jobDetail;
//    }
//
//    /**
//     * 定时触发器
//     * @param checkInventoryJob 任务
//     * @return
//     */
//    @Bean(name = "checkInventoryJobTrigger")
//    public CronTriggerFactoryBean cronCheckInventoryJobTrigger(JobDetail checkInventoryJob){
//        CronTriggerFactoryBean tigger = new CronTriggerFactoryBean();
//        tigger.setJobDetail(checkInventoryJob);
//        //cron表达式，每天0:35执行一次
//        tigger.setCronExpression("0 35 0 * * ?");
//
////        tigger.setCronExpression("0 0/1 * * * ?");
//        tigger.setName("checkInventoryJobTrigger");
//        return tigger;
//    }
//
//    /**
//     *  配置任务
//     * @param quartzTask QuartzTask为需要执行的任务 SyncEcnFileTask
//     * @return
//     */
//    @Bean(name = "syncEcnFileJob")
//    public MethodInvokingJobDetailFactoryBean syncEcnFileJob(SyncEcnFileTask quartzTask) {
//        MethodInvokingJobDetailFactoryBean jobDetail = new MethodInvokingJobDetailFactoryBean();
//        // 是否并发执行
//        jobDetail.setConcurrent(false);
//        // 设置任务的名字
//        jobDetail.setName("syncEcnFileJob");
//        // 设置任务的分组，在多任务的时候使用
//        jobDetail.setGroup("group2");
//        // 需要执行的对象
//        jobDetail.setTargetObject(quartzTask);
//        /*
//         * TODO  非常重要
//         * 执行QuartzTask类中的需要执行方法
//         */
//        jobDetail.setTargetMethod("reptilian");
//        return jobDetail;
//    }
//
//    /**
//     * 定时触发器
//     * @param syncEcnFileJob 任务
//     * @return
//     */
//    @Bean(name = "syncEcnFileJobTrigger")
//    public CronTriggerFactoryBean cronSyncEcnFileJobTrigger(JobDetail syncEcnFileJob){
//        CronTriggerFactoryBean tigger = new CronTriggerFactoryBean();
//        tigger.setJobDetail(syncEcnFileJob);
//        //cron表达式，每小时执行一次
//        tigger.setCronExpression("0 10 * * * ?");
//        tigger.setName("syncEcnFileJobTrigger");
//        return tigger;
//    }
//
//    /**
//     *  配置任务
//     * @param quartzTask QuartzTask为需要执行的任务 SyncEcnFileTask
//     * @return
//     */
//    @Bean(name = "syncDrawFileJob")
//    public MethodInvokingJobDetailFactoryBean syncDrawFileJob(SyncDrawFileTask quartzTask) {
//        MethodInvokingJobDetailFactoryBean jobDetail = new MethodInvokingJobDetailFactoryBean();
//        // 是否并发执行
//        jobDetail.setConcurrent(false);
//        // 设置任务的名字
//        jobDetail.setName("syncDrawFileJob");
//        // 设置任务的分组，在多任务的时候使用
//        jobDetail.setGroup("group2");
//        // 需要执行的对象
//        jobDetail.setTargetObject(quartzTask);
//        /*
//         * TODO  非常重要
//         * 执行QuartzTask类中的需要执行方法
//         */
//        jobDetail.setTargetMethod("reptilian");
//        return jobDetail;
//    }
//
//    /**
//     * 定时触发器
//     * @param syncDrawFileJob 任务
//     * @return
//     */
//    @Bean(name = "syncDrawFileJobTrigger")
//    public CronTriggerFactoryBean cronSyncDrawFileJobTrigger(JobDetail syncDrawFileJob){
//        CronTriggerFactoryBean tigger = new CronTriggerFactoryBean();
//        tigger.setJobDetail(syncDrawFileJob);
//        //cron表达式，每小时执行一次
//        tigger.setCronExpression("0 20 * * * ?");
//        tigger.setName("syncDrawFileJobTrigger");
//        return tigger;
//    }
//
//    /**
//     *  配置任务
//     * @param quartzTask QuartzTask为需要执行的任务 ExpireFilePermissionTask
//     * @return
//     */
//    @Bean(name = "expireFilePermissionJob")
//    public MethodInvokingJobDetailFactoryBean expireFilePermissionJob(ExpireFilePermissionTask quartzTask) {
//        MethodInvokingJobDetailFactoryBean jobDetail = new MethodInvokingJobDetailFactoryBean();
//        // 是否并发执行
//        jobDetail.setConcurrent(false);
//        // 设置任务的名字
//        jobDetail.setName("expireFilePermissionJob");
//        // 设置任务的分组，在多任务的时候使用
//        jobDetail.setGroup("group2");
//        // 需要执行的对象
//        jobDetail.setTargetObject(quartzTask);
//        /*
//         * TODO  非常重要
//         * 执行QuartzTask类中的需要执行方法
//         */
//        jobDetail.setTargetMethod("reptilian");
//        return jobDetail;
//    }
//
//    /**
//     * 定时触发器
//     * @param expireFilePermissionJob 任务
//     * @return
//     */
//    @Bean(name = "expireFilePermissionJobTrigger")
//    public CronTriggerFactoryBean cronExpireFilePermissionJobTrigger(JobDetail expireFilePermissionJob){
//        CronTriggerFactoryBean tigger = new CronTriggerFactoryBean();
//        tigger.setJobDetail(expireFilePermissionJob);
//        //cron表达式，每天0:15执行一次
////        tigger.setCronExpression("*/15 * * * * ?");
//        tigger.setCronExpression("0 15 0 * * ?");
//        tigger.setName("expireFilePermissionJobTrigger");
//        return tigger;
//    }
//
//    /**
//     * 调度工厂
//     * @param checkUserStatusJobTrigger 触发器
//     * @return 调度工厂
//     */
//    @Bean(name = "scheduler")
//    public SchedulerFactoryBean schedulerFactory(Trigger checkUserStatusJobTrigger,Trigger checkInventoryJobTrigger,Trigger syncEcnFileJobTrigger,Trigger syncDrawFileJobTrigger,Trigger expireFilePermissionJobTrigger) {
//        SchedulerFactoryBean factoryBean = new SchedulerFactoryBean();
////        // 用于quartz集群,QuartzScheduler 启动时更新己存在的Job
////        factoryBean.setOverwriteExistingJobs(true);
////        // 延时启动，应用启动1秒后
////        factoryBean.setStartupDelay(1);
////        // 注册触发器
////        factoryBean.setTriggers(jobTrigger,checkUserStatusJobTrigger,checkInventoryJobTrigger,syncEcnFileJobTrigger,syncDrawFileJobTrigger,expireFilePermissionJobTrigger);
//        return factoryBean;
//    }

}
